home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / OS / FWODMisc / Include / FWAcquir.h next >
Encoding:
Text File  |  1996-08-16  |  7.5 KB  |  260 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWAcquir.h
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #ifndef FWACQUIR_H
  11. #define FWACQUIR_H
  12.  
  13. #ifndef FWEXCDEF_H
  14. #include "FWExcDef.h"
  15. #endif
  16.  
  17. #ifndef FWEXCLIB_H
  18. #include "FWExcLib.h"
  19. #endif
  20.  
  21. #ifndef FWODTYPS_H
  22. #include "FWODTyps.h"
  23. #endif
  24.  
  25. //========================================================================================
  26. // Forward Class Declarations
  27. //========================================================================================
  28.  
  29. class ODWindow;
  30. class ODFrame;
  31. class ODPart;
  32. class ODRefCntObject;
  33. class ODShape;
  34. class ODTransform;
  35. class ODStorageUnit;
  36. class ODStorageUnitView;
  37. class ODStorageUnitCursor;
  38. class ODMenuBar;
  39. class ODDraft;
  40. class ODDocument;
  41. class ODContainer;
  42.  
  43. //========================================================================================
  44. // class FW_CAcquiredODRefCntObject
  45. //========================================================================================
  46.  
  47. class FW_CAcquiredODRefCntObject
  48. {
  49. public:
  50.     FW_DECLARE_AUTO(FW_CAcquiredODRefCntObject)
  51.  
  52.     FW_CAcquiredODRefCntObject();
  53.     FW_CAcquiredODRefCntObject(const FW_CAcquiredODRefCntObject& other);
  54.     FW_CAcquiredODRefCntObject(ODRefCntObject* other);
  55.     ~FW_CAcquiredODRefCntObject();
  56.  
  57. protected:
  58.     FW_CAcquiredODRefCntObject*    AcquireAndAssign(ODRefCntObject* newObject);
  59.     FW_CAcquiredODRefCntObject*    Assign(ODRefCntObject* newObject);
  60.  
  61. protected:
  62.     ODRefCntObject*        fODObject;
  63. };
  64.  
  65.  
  66. //========================================================================================
  67. // class FW_TAcquiredODRefCntObject
  68. //========================================================================================
  69.  
  70. template<class t> 
  71. class FW_TAcquiredODRefCntObject : public FW_CAcquiredODRefCntObject
  72. {
  73. public:
  74.     FW_TAcquiredODRefCntObject() {}
  75.     FW_TAcquiredODRefCntObject(const FW_TAcquiredODRefCntObject<t>& other) :
  76.         FW_CAcquiredODRefCntObject(other) {}
  77.     FW_TAcquiredODRefCntObject(t* other) :
  78.         FW_CAcquiredODRefCntObject(other) {}
  79.     ~FW_TAcquiredODRefCntObject() {}
  80.  
  81.     FW_TAcquiredODRefCntObject<t>& operator=(const FW_TAcquiredODRefCntObject<t>& other)
  82.         {return *(FW_TAcquiredODRefCntObject<t>*)AcquireAndAssign(other.fODObject);}
  83.     FW_TAcquiredODRefCntObject<t>& operator=(t* odObject)
  84.         {return *(FW_TAcquiredODRefCntObject<t>*)Assign(odObject);}
  85.  
  86.     FW_Boolean operator==(const FW_TAcquiredODRefCntObject<t>& other) const
  87.         {return fODObject == other.fODObject;}
  88.     FW_Boolean operator!=(const FW_TAcquiredODRefCntObject<t>& other) const
  89.         {return fODObject != other.fODObject;}
  90.  
  91.     FW_Boolean operator==(t* odObject) const
  92.         {return fODObject == odObject;}
  93.     FW_Boolean operator!=(t* odObject) const
  94.         {return fODObject != odObject;}
  95.  
  96.     operator t*() const
  97.         {return (t*)fODObject;}        
  98.     operator const void*() const
  99.         {return (t*)fODObject;}        
  100.     t* operator->() const
  101.         {return (t*)fODObject;}
  102. };
  103.  
  104. //========================================================================================
  105. // Template classes typedef
  106. //========================================================================================
  107.  
  108. #ifndef SOM_ODWindow_xh
  109. #include "Window.xh"
  110. #endif
  111.  
  112. typedef FW_TAcquiredODRefCntObject<ODWindow>                 FW_CAcquiredODWindow;
  113.  
  114. #ifndef SOM_ODFrame_xh
  115. #include "Frame.xh"
  116. #endif
  117.  
  118. typedef FW_TAcquiredODRefCntObject<ODFrame>                 FW_CAcquiredODFrame;
  119.  
  120. #ifndef SOM_ODPart_xh
  121. #include "Part.xh"
  122. #endif
  123.  
  124. typedef FW_TAcquiredODRefCntObject<ODPart>                     FW_CAcquiredODPart;
  125.  
  126. #ifndef SOM_ODShape_xh
  127. #include <Shape.xh>
  128. #endif
  129.  
  130. typedef FW_TAcquiredODRefCntObject<ODShape>                 FW_CAcquiredODShape;
  131.  
  132. #ifndef SOM_ODStorageUnit_xh
  133. #include <StorageU.xh>
  134. #endif
  135.  
  136. typedef FW_TAcquiredODRefCntObject<ODStorageUnit>             FW_CAcquiredODStorageUnit;
  137.  
  138. #ifndef SOM_ODTransform_xh
  139. #include <Trnsform.xh>
  140. #endif
  141.  
  142. typedef FW_TAcquiredODRefCntObject<ODTransform>             FW_CAcquiredODTransform;
  143.  
  144. #ifndef SOM_ODMenuBar_xh
  145. #include <MenuBar.xh>
  146. #endif
  147.  
  148. typedef FW_TAcquiredODRefCntObject<ODMenuBar>                 FW_CAcquiredODMenuBar;
  149.  
  150. #ifndef SOM_ODDraft_xh
  151. #include <Draft.xh>
  152. #endif
  153.  
  154. typedef FW_TAcquiredODRefCntObject<ODDraft>                 FW_CAcquiredODDraft;
  155.  
  156. #ifndef SOM_ODDocument_xh
  157. #include <Document.xh>
  158. #endif
  159.  
  160. typedef FW_TAcquiredODRefCntObject<ODDocument>                 FW_CAcquiredODDocument;
  161.  
  162. #ifndef SOM_ODContainer_xh
  163. #include <ODCtr.xh>
  164. #endif
  165.  
  166. typedef FW_TAcquiredODRefCntObject<ODContainer>             FW_CAcquiredODContainer;
  167.  
  168. //========================================================================================
  169. // class FW_CAcquireODStorageUnitView
  170. //========================================================================================
  171.  
  172. class FW_CAcquireODStorageUnitView
  173. {
  174. public:
  175.     FW_DECLARE_AUTO(FW_CAcquireODStorageUnitView)
  176.  
  177.     FW_CAcquireODStorageUnitView(Environment* ev, 
  178.                                 ODStorageUnit* su, 
  179.                                 ODPropertyName propertyName, 
  180.                                 ODPositionCode propertyPosCode, 
  181.                                 ODValueType valueType, 
  182.                                 ODValueIndex valueIndex, 
  183.                                 ODPositionCode valuePosCode);            // Focus and create the storageView
  184.     FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su);    // Suppose that already focused
  185.     ~FW_CAcquireODStorageUnitView();
  186.  
  187.     operator ODStorageUnitView*() const
  188.         {return fSUView;}
  189.     ODStorageUnitView* operator->() const
  190.         {return fSUView;}
  191.  
  192. private:
  193.     ODStorageUnitView*    fSUView;
  194. };
  195.  
  196. //========================================================================================
  197. // class FW_CAcquireODPropertyName
  198. //========================================================================================
  199.  
  200. class FW_CAcquireODPropertyName
  201. {
  202. public:
  203.     FW_DECLARE_AUTO(FW_CAcquireODPropertyName)
  204.  
  205.     FW_CAcquireODPropertyName(Environment* ev, ODStorageUnit* su);
  206.     FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitView* suView);
  207.     FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitCursor* suCursor);
  208.     ~FW_CAcquireODPropertyName();
  209.  
  210.     operator ODPropertyName() const
  211.         {return fPropName;}
  212.  
  213. private:
  214.     ODPropertyName    fPropName;
  215. };
  216.  
  217. //========================================================================================
  218. // class FW_CAcquireODType
  219. //========================================================================================
  220.  
  221. class FW_CAcquireODType
  222. {
  223. public:
  224.     FW_DECLARE_AUTO(FW_CAcquireODType)
  225.  
  226.     FW_CAcquireODType(ODType type);
  227.     ~FW_CAcquireODType();
  228.  
  229.     operator ODType() const
  230.         {return fODType;}
  231.  
  232. private:
  233.     ODType    fODType;
  234. };
  235.  
  236. //========================================================================================
  237. // FW_CopyAndRelease
  238. //========================================================================================
  239.  
  240. //########################################################################################
  241. // SCpp Hack
  242. // Work around SCpp 8.0.3 bug - importing overloaded functions doesn't work.
  243. // Replace overloaded functions with normal functions with different names.
  244. // Use inline overloaded functions which turn around and call the renamed
  245. // functions so client code isn't affected.
  246. //########################################################################################
  247.  
  248. ODShape*        FW_PrivCopyAndRelease_Shape(Environment* ev, ODShape* shapeToCopy);
  249. ODTransform*     FW_PrivCopyAndRelease_Transform(Environment* ev, ODTransform* transformToCopy);
  250.  
  251. inline ODShape*        FW_CopyAndRelease (Environment* ev, ODShape* shapeToCopy) {
  252.     return FW_PrivCopyAndRelease_Shape (ev, shapeToCopy);
  253. }
  254.  
  255. inline ODTransform* FW_CopyAndRelease (Environment* ev, ODTransform* transformToCopy) {
  256.     return FW_PrivCopyAndRelease_Transform (ev, transformToCopy);
  257. }
  258.  
  259. #endif
  260.